// State.h

// Informacie o stave hry

#ifndef STATE_H
#define STATE_H

#include "Player/World/WorldObject.h"
#include "Common/World/Types.h"

// Trieda zapuzdrujuca informacie o stave hry
class State : public WorldObject
{
	// Simulacny cas
	int simTime;
	// Hraci mod
	PlayMode playMode;
	// Nase skore
	int ourScore;
	// Skore supera
	int theirScore;

public:
	// Konstruktor
	State(World* w);
	// Kopirovaci konstruktor
	State(const State& state);
	// Destruktor
	virtual ~State();
	// Operator priradenia
	virtual State& operator =(const State&);
	
	// Metody pre pracovanie so stavovymi informaciami

	// Vrati hraci mod
	PlayMode GetPlayMode() const
	{ 
		return playMode;
	}
	// Vrati nase skore
	int GetOurScore() const
	{ 
		return ourScore;
	}
	// Vrati skore supera
	int GetTheirScore() const
	{ 
		return theirScore; 
	}
	// Vrati simulacny cas
	int GetSimTime() const
	{ 
		return simTime; 
	}
	// Nastavi hraci mod
	void SetPlayMode(PlayMode pm)
	{ 
		playMode = pm; 
	}
	// Nastavi skore (nase aj supera)
	void SetScore(int our, int their)
	{ 
		ourScore = our; 
		theirScore = their; 
	}
	// Nastavi simulacny cas
	void SetSimTime(int t)
	{ 
		simTime = t; 
	}
	// Operacie na stave

	// Vykopavame my?
	bool IsOurKickIn() const;
	// Je zastaveny cas?
	bool IsTimeStoped() const;
};

#endif // STATE_H
